csshXを使ってリモートホストの一括操作を行う
コンソールの一括操作がしたい
先日、クラスタリングしているAWS上のWEBサーバについてちょっとした設定変更が必要になり、 ちまちまとsshログイン→viで修正を繰り返していたのですが、修正頻度とインスタンス数が増えてきて面倒になってきました。 クラスタリングするインスタンス数が10個くらいになり、全部のサーバに修正ファイルをアップロードしなおしたり、 アプリケーションの再起動したりする手間が一気にふえてどうしようと思っていた頃、 「いいアプリがあるよ〜」と教えてもらったのが、今回ご紹介するcsshXです。
csshX このアプリケーションはMac用のアプリケーションで、指定した複数のリモートホストに対して一括してログインし、 すべての端末に対して同じコマンドを実行できます。 今回はAWSの複数のサーバにSSHでログインしていろいろやるための手順をご紹介します。 ※各サーバにはsshですでに接続できる前提
1.csshXのインストール
まずはcsshXをインストールしましょう。 Macでのインストールはhomebrewで簡単にできます。
% brew install csshx
sshのconfigファイルを修正
ログインするために-iオプションでキーファイルを指定したり、ユーザー名を指定したりしてログインしている場合、 configファイルに設定を記述して余計なオプションを指定せずログインできるようにします。 ~/.ssh/configファイルに下記のような記述を行いましょう。 ※キーファイルをmyKey.pemと仮定.
Host server_01 User ec2-user HostName <AWSホスト名> IdentityFile ~/.ssh/myKey.pem #以下、一括ログインしたい分だけ設定情報の記述 Host server_02 ・・・ Host server_03 ・・・
これで、次のようにsshコマンドを実行してAWSサーバにログインしていた場合、
% ssh -i ~/.ssh/myKey.pem ec2-user@<AWSホスト名>
簡単な指定でsshログインが実行できるようになりました。
% ssh server_01
3.csshX実行
あとはcsshXコマンドで複数サーバに一括してログインするだけです。 csshXコマンドの後にスペース区切りで先ほどconfigファイルに設定したホスト名を記述します。
% csshX server_01 server_02 ・・・・・・・・・
設定情報に問題がなければ、下記画像のように指定した分だけterminalが起動します。 画面下の赤いウィンドウにフォーカスし、何かコマンドを入力すれば、各コンソールで同じようにコマンドが入力されます。 また、個別のコンソールにフォーカスしてコマンドを入力することも可能です。
詳細なマニュアルについては下記リンクをご確認ください。 http://code.google.com/p/csshx/wiki/ManualM
まとめ
今回はコンソールを一括操作するためのツール、csshXの紹介でした。 topで各サーバの負荷を確認したり、設定ファイルの一括変更とかが簡単にできて便利ですね。